package api

import (
	"github.com/gin-gonic/gin"

	"goskeleton/app/global/consts"
	"goskeleton/app/global/variable"
	"goskeleton/app/http/controller"
	service "goskeleton/app/service/sms"
	"goskeleton/app/utils/response"
)

// SendTextSms 发送文本短信
var SendTextSms controller.Controller = func(context *gin.Context) {
	var log = variable.ZapLog.Sugar()
	// 由于本项目骨架已经将表单验证器的字段(成员)绑定在上下文，因此可以按照 GetString()、GetInt64()、GetFloat64（）等快捷获取需要的数据类型
	// 当然也可以通过gin框架的上下文原原始方法获取，例如： context.PostForm("name") 获取，这样获取的数据格式为文本，需要自己继续转换
	// phones := data_transfer.AnySlice[string](context, "phones")
	// content := context.GetString(consts.ValidatorPrefix + "content")
	// atTime := context.GetString(consts.ValidatorPrefix + "at-time")
	// priority := int(context.GetFloat64(consts.ValidatorPrefix + "priority"))
	// userIp := context.ClientIP()
	// response.Success(context, "ok", gin.H{
	// 	"phones":   phones,
	// 	"content":  content,
	// 	"priority": priority,
	// 	"at-time":  atTime,
	// 	"userIp":   userIp,
	// })

	value, ok := context.Get(consts.ValidatorWholeObject)
	if !ok {
		response.Fail(context, 400, "参数校验未通过", nil)
	}
	log.Infof("%T, %v", value, value)
	resp, _ := service.SendSms(value)
	response.Success(context, "ok", resp)
}

var SendTemplateSms controller.Controller = func(context *gin.Context) {
	mt, ok := context.Get(consts.ValidatorWholeObject)
	if ok {
		response.Success(context, "ok", mt)
	} else {
		response.Fail(context, 400, "参数校验未通过", nil)
	}
}
